// import 'package:im_flutter_sdk/chat_sdk.dart';
// import 'package:protobuf/protobuf.dart';

// class RoomMsg<T extends GeneratedMessage> {
//   final Message msg;
//   final T content;

//   late MessageData msgData;
//   late Scene scene;
//   SimpleUser? sender;

//   /// 引用消息
//   Message? quoteMsg;

//   RoomMsg(this.msg, this.content) {
//     msgData = msg.data;
//     scene = msgData.scene;
//     msg.data.content.unpackInto(content);

//     if (content is ChatContent) {
//       sender = (content as ChatContent).sender;
//       if((content as ChatContent).hasQuoteMsg()){
//         quoteMsg = (content as ChatContent).quoteMsg;
//       }
//     } else if (content is CardChatContent) {
//       sender = (content as CardChatContent).sender;
//       if((content as CardChatContent).hasQuoteMsg()){
//         quoteMsg = (content as CardChatContent).quoteMsg;
//       }
//     }
//   }

//   void clearQuoteMsg(){
//     if (content is ChatContent) {
//       (content as ChatContent).clearQuoteMsg();
//     } else if (content is CardChatContent) {
//       (content as CardChatContent).clearQuoteMsg();
//     }
//   }

//   bool get hasQuoteMsg => quoteMsg != null;
// }

// extension ChatMsgExtension on RoomMsg {
//   List<ShowItem> get contentItems => content is ChatContent ? (content as ChatContent).showItem : [];

//   CardChatContent? get cardContent => content is CardChatContent ? (content as CardChatContent) : null;

//   String get quoteShowMsg {
//     String msg = '';
//     if(content is ChatContent){
//       msg = contentItems.map((e) => e.desc).join("");
//     }else if(content is CardChatContent){
//       msg = cardContent?.title ?? '';
//     }
//     return '${sender?.nickname??'[User]'}: $msg';
//   }
// }

// extension ShowItemExtension on ShowItem{

//   String get desc{
//     switch(style){
//       case ItemStyle.text:
//         return text;
//       case ItemStyle.icon:
//         return ' [Icon] ';
//       case ItemStyle.link:
//         return StringUtil.isEmpty(text) ? ' [Link] ' : text;
//       case ItemStyle.emote:
//         return StringUtil.isEmpty(text) ? ' [Emote] ' : text;
//       default:
//         return text;
//     }
//   }

// }
